<project name="icecream-visual" app="Snap! 4.0, http://snap.berkeley.edu" version="1"><notes>Lists of lists of functions!&#xD;&#xD;Green flag to display every possible ice cream serving; space to display every possible pizza serving.&#xD;&#xD;Each of the grey ("other") reporters such as SMALL and VANILLA takes a Boolean input.  If the input is TRUE, it reports its name as a text string; if the input is FALSE it reports a command script that can be RUN to draw its part of the picture.&#xD;&#xD;CROSSPRODUCT takes a list of lists, each of which is a mutually exclusive option, e.g., [small medium large].  It reports a list of lists in which each sublist contains one item from each of the original option lists:&#xD;&#xD;CROSSPRODUCT [[A B C] [X Y]]&#xD;    ==&gt;  [[A X] [A Y] [B X] [B Y] [C X] [C Y]]&#xD;&#xD;It&apos;s called "crossproduct" because if the input is viewed as a list of sets, it reports the Cartesian cross product of those sets.&#xD;&#xD;The cool thing is that there can be any number of sets, each with any number of items, because crossproduct is written as a tree recursion rather than as a nested loop.</notes><thumbnail></thumbnail><stage name="Stage" costume="0" tempo="60" threadsafe="false" codify="false" scheduled="false" id="1"><pentrails></pentrails><costumes><list id="2"></list></costumes><sounds><list id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="100" y="70" heading="90" scale="0.5" rotation="1" draggable="true" hidden="true" costume="2" color="80,80,80" pen="tip" id="8"><costumes><list id="9"><item><costume name="scoop" center-x="134" center-y="94" image="" id="10"/></item><item><costume name="chocolate" center-x="134.5" center-y="93" image="" id="11"/></item><item><costume name="pumpkin" center-x="135" center-y="98" image="" id="12"/></item><item><costume name="rootbeer" center-x="135" center-y="93" image="" id="13"/></item><item><costume name="cone" center-x="102" center-y="175" image="" id="14"/></item><item><costume name="cup" center-x="175" center-y="116.75" image="" id="15"/></item><item><costume name="noback" center-x="175.5" center-y="107.75" image="" id="16"/></item><item><costume name="pizza" center-x="112" center-y="113" image="" id="17"/></item><item><costume name="pepperoni" center-x="240" center-y="180" image="" id="18"/></item><item><costume name="sausage" center-x="240" center-y="180" image="" id="19"/></item><item><costume name="pineapple" center-x="240" center-y="180" image="" id="20"/></item><item><costume name="basil" center-x="240" center-y="180" image="" id="21"/></item><item><costume name="mushroom" center-x="240" center-y="180" image="" id="22"/></item></list></costumes><sounds><list id="23"></list></sounds><variables></variables><blocks></blocks><scripts><script x="14" y="14"><block s="receiveGo"></block><custom-block s="serve all options %l"><block s="reportNewList"><list><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="small %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="medium %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="large %b"><l/></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="vanilla %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="chocolate pudding %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="pumpkin %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="root beer ripple %b"><l/></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="cone %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cup %b"><l/></custom-block></autolambda><list></list></block></list></block></list></block></custom-block></script><script x="16" y="199"><block s="receiveKey"><l><option>space</option></l></block><custom-block s="serve all options %l"><block s="reportNewList"><list><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="small %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="medium %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="large %b"><l/></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="pizza with %b"><l/></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="basil %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="mushroom %b"><l/></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="pepperoni %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="sausage %b"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="pineapple %b"><l/></custom-block></autolambda><list></list></block></list></block></list></block></custom-block></script></scripts></sprite><sprite name="Sprite2" idx="2" x="-194" y="-116" heading="90" scale="0.3" rotation="1" draggable="true" costume="1" color="188.7,0,22.64400000000002" pen="tip" id="212"><costumes><list id="213"><item><costume name="server" center-x="240" center-y="180" image="" id="214"/></item></list></costumes><sounds><list id="215"></list></sounds><variables></variables><blocks></blocks><scripts><script x="14" y="58"><block s="receiveMessage"><l><option>any message</option></l></block><block s="doIfElse"><block s="reportEquals"><block s="getLastMessage"></block><l>UNSAY</l></block><script><block s="bubble"><l></l></block></script><script><block s="bubble"><block s="getLastMessage"></block></block></script></block></script></scripts></sprite><watcher scope="Sprite" s="yPosition" style="normal" x="5" y="5" color="74,108,212" hidden="true"/><watcher scope="Sprite" s="xPosition" style="normal" x="5" y="15.500000999999997" color="74,108,212" hidden="true"/><watcher var="size" style="normal" x="5" y="26.000001999999995" color="243,118,29" hidden="true"/><watcher var="flavor" style="normal" x="5" y="36.50000299999999" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="draw cup" type="command" category="looks"><header></header><code></code><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-90</l></block><block s="doSwitchToCostume"><l>cup</l></block><block s="show"></block><block s="doStamp"></block></script></block-definition><block-definition s="draw cup scoops" type="command" category="looks"><header></header><code></code><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-60</l></block><block s="doSwitchToCostume"><block var="flavor"/></block><block s="show"></block><block s="doStamp"></block><block s="hide"></block><custom-block s="draw noback"></custom-block><block s="hide"></block><block s="doSwitchToCostume"><block var="flavor"/></block><block s="gotoXY"><l>100</l><l>-20</l></block><block s="doRepeat"><block s="reportDifference"><block var="size"/><l>1</l></block><script><block s="show"></block><block s="doStamp"></block><block s="hide"></block><block s="changeYPosition"><l>40</l></block></script></block></script></block-definition><block-definition s="draw noback" type="command" category="looks"><header></header><code></code><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-90</l></block><block s="doSwitchToCostume"><l>noback</l></block><block s="show"></block><block s="doStamp"></block></script></block-definition><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportJoinWords"><list><l> </l><block s="evaluate"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></autolambda><list></list></block><list></list></block></list></block></list></block></block></script></block></script></block-definition><block-definition s="list-&gt;sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence-&gt;list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l><l>thisword</l><l>emptyword</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>thisword</l><l></l></block><block s="doSetVar"><l>emptyword</l><l></l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportLetter"><block var="i"/><block var="text"/></block><l> </l></block><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block><block s="doSetVar"><l>thisword</l><block var="emptyword"/></block></script></block></script><script><block s="doSetVar"><l>thisword</l><block s="reportJoinWords"><list><block var="thisword"/><block s="reportLetter"><block var="i"/><block var="text"/></block></list></block></block></script></block></script></custom-block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="thisword"/><block var="emptyword"/></block></block><script><block s="doAddToList"><block var="thisword"/><block var="result"/></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="append %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="287" collapsed="false">Take any number of input lists, and create a new list containing the items of the input lists.  So&#xD;              APPEND [A B] [C D]&#xD;where the [,,,] are lists reports the list&#xD;              [A B C D]&#xD;not [[A B] [C D]].</comment><header></header><code></code><inputs><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="lists"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListLength"><block var="lists"/></block><l>1</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="lists"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="lists"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><custom-block s="append %mult%l"><block s="reportCDR"><block var="lists"/></block></custom-block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="lists"/></block></block><custom-block s="append %mult%l"><block s="reportCONS"><block s="reportCDR"><block s="reportListItem"><l>1</l><block var="lists"/></block></block><block s="reportCDR"><block var="lists"/></block></block></custom-block></block></block></script></block></script></block-definition><block-definition s="reverse %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="223" collapsed="false">Reports a new list containing the items of the input list, but in the opposite order.</comment><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>helper</l></list></block><block s="doSetVar"><l>helper</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="input"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="result"/></block></script></block><block s="doReport"><block s="evaluate"><block var="helper"/><list><block s="reportCDR"><block var="input"/></block><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="input"/></block><block var="result"/></block></list></block></block></script><list><l>input</l><l>result</l></list></block></block><block s="doWarp"><script><block s="doReport"><block s="evaluate"><block var="helper"/><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block></script></block-definition><block-definition s="remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportCDR"><block var="data"/></block><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block></script></block></script></block-definition><block-definition s="sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="204" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>even items</l><l>odd items</l><l>merge</l></list></block><block s="doSetVar"><l>odd items</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><l></l><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><l/></block><block s="evaluate"><block var="even items"/><list><block s="reportCDR"><l/></block></list></block></block></block></script><list></list></block></block><block s="doSetVar"><l>even items</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><l></l><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="evaluate"><block var="odd items"/><list><block s="reportCDR"><l/></block></list></block></block></script><list></list></block></block><block s="doSetVar"><l>merge</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="#1"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#2"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="#2"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#1"/></block></script></block><block s="doIfElse"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="reportListItem"><l>1</l><block var="#2"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="evaluate"><block var="merge"/><list><block s="reportCDR"><block var="#1"/></block><block var="#2"/></list></block></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#2"/></block><block s="evaluate"><block var="merge"/><list><block var="#1"/><block s="reportCDR"><block var="#2"/></block></list></block></block></block></script></block></script><list><l>#1</l><l>#2</l></list></block></block><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="evaluate"><block var="merge"/><list><custom-block s="sort %l ordering with %predRing"><block s="evaluate"><block var="odd items"/><list><block var="data"/></list></block><block var="function"/></custom-block><custom-block s="sort %l ordering with %predRing"><block s="evaluate"><block var="even items"/><list><block var="data"/></list></block><block var="function"/></custom-block></list></block></block></script></block-definition><block-definition s="serve %&apos;choice&apos;" type="command" category="other"><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="clear"></block><custom-block s="for each %upvar of %l %cs"><l>item</l><block var="choice"/><script><block s="doRun"><block s="evaluate"><block var="item"/><list><block s="reportFalse"></block></list></block><list></list></block></script></custom-block><block s="doBroadcast"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="menu item"/><list><block s="reportTrue"></block></list></block></autolambda><list><l>menu item</l></list></block><list><block var="choice"/></list></custom-block></custom-block></block></script></block-definition><block-definition s="index of %&apos;item&apos; in %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><inputs><input type="%s"></input><input type="%l"></input></inputs><script><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block s="reportListLength"><block var="data"/></block><script><block s="doIf"><block s="reportEquals"><block var="item"/><block s="reportListItem"><block var="i"/><block var="data"/></block></block><script><block s="doReport"><block var="i"/></block></script></block></script></custom-block><block s="doReport"><l>-1</l></block></script></block-definition><block-definition s="draw cone" type="command" category="looks"><header></header><code></code><inputs></inputs><script><block s="hide"></block><block s="gotoXY"><l>100</l><l>-90</l></block><block s="doSwitchToCostume"><l>cone</l></block><block s="show"></block><block s="doStamp"></block></script></block-definition><block-definition s="cup %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>cup</l><block s="reifyScript"><script><custom-block s="draw cup"></custom-block><custom-block s="draw cup scoops"></custom-block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="cone %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>cone</l><block s="reifyScript"><script><custom-block s="draw cone"></custom-block><custom-block s="draw cone scoops"></custom-block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="draw cone scoops" type="command" category="looks"><header></header><code></code><inputs></inputs><script><block s="hide"></block><block s="doSwitchToCostume"><block var="flavor"/></block><block s="gotoXY"><l>100</l><l>-10</l></block><block s="doRepeat"><block var="size"/><script><block s="show"></block><block s="doStamp"></block><block s="hide"></block><block s="changeYPosition"><l>40</l></block></script></block></script></block-definition><block-definition s="serve all options %&apos;menu&apos;" type="command" category="other"><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="clear"></block><block s="setScale"><l>50</l></block><block s="hide"></block><block s="doBroadcast"><l>UNSAY</l></block><block s="doWait"><l>.001</l></block><custom-block s="for each %upvar of %l %cs"><l>item</l><custom-block s="crossproduct %l"><block var="menu"/></custom-block><script><custom-block s="serve %l"><block var="item"/></custom-block><block s="doWait"><l>1</l></block></script></custom-block></script></block-definition><block-definition s="crossproduct %&apos;lol&apos;" type="reporter" category="lists"><header></header><code></code><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>spread</l><l>rest</l></list></block><block s="doSetVar"><l>spread</l><block s="reifyScript"><script><block s="doReport"><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCONS"><block var="new first"/><block var="tail"/></block></autolambda><list><l>tail</l></list></block><list><block var="rest"/></list></custom-block></block></script><list><l>new first</l></list></block></block><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="lol"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list></list></block></list></block></block></script></block><block s="doSetVar"><l>rest</l><custom-block s="crossproduct %l"><block s="reportCDR"><block var="lol"/></block></custom-block></block><block s="doReport"><custom-block s="append %mult%l"><custom-block s="map %repRing over %mult%l"><block var="spread"/><list><block s="reportListItem"><l>1</l><block var="lol"/></block></list></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="small %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>small</l><block s="reifyScript"><script><block s="doSetVar"><l>size</l><l>1</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="medium %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>medium</l><block s="reifyScript"><script><block s="doSetVar"><l>size</l><l>2</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="large %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>large</l><block s="reifyScript"><script><block s="doSetVar"><l>size</l><l>3</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="vanilla %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>vanilla</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>1</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="chocolate pudding %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>chocolate pudding</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>2</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pumpkin %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pumpkin</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>3</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="root beer ripple %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>root beer ripple</l><block s="reifyScript"><script><block s="doSetVar"><l>flavor</l><l>4</l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pizza with %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pizza with</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>pizza</l></block><block s="setScale"><block s="reportProduct"><block var="size"/><l>50</l></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="show"></block><block s="doStamp"></block><block s="hide"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="basil %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>basil and</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>basil</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="mushroom %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>mushroom and</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>mushroom</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pepperoni %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pepperoni</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>pepperoni</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="sausage %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>sausage</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>sausage</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="pineapple %&apos;name?&apos;" type="reporter" category="other"><header></header><code></code><inputs><input type="%b"></input></inputs><script><block s="doReport"><custom-block s="if %b then %anyUE else %anyUE"><block var="name?"/><l>pineapple</l><block s="reifyScript"><script><block s="doSwitchToCostume"><l>pineapple</l></block><block s="show"></block><block s="doStamp"></block></script><list></list></block></custom-block></block></script></block-definition></blocks><variables><variable name="size"><l>2</l></variable><variable name="flavor"><l>2</l></variable></variables></project>